Computer-based systems enable a wide variety of data processing tasks to be accomplished in a fast and efficient manner. From hand-held consumer products to geographically distributed wide area networks with multi-device data storage arrays, such systems continue to increasingly pervade all areas of society and commerce.
Software is provided to direct the operation of such systems. Software (including firmware) can take a number of forms such as application programs, operating systems, interface and controller routines, and maintenance and housekeeping modules. Each time a process is initiated by the software, a number of additional processes, handshakes, links, calculations, and other events can be carried out by the various layers of software in order to service and complete the initial process. Resource sets utilized by the various processes can be allocated to a memory space during system initialization to provide ready access by the various layers during operation.
Generally, with increased complexity in the overall software system, including additional layers of software applications and operating systems, distributed processing and fault tolerant redundancy, it can become increasingly difficult to allocate multiple resource sets of various size from the various layers into the same memory space in an efficient manner.